A virtual input device can be implemented as a resource or feature of a computer program to receive input associated with that program. A virtual input device also can be implemented as a separate computer program that is configurable to provide received input to one or more other applications running on the same computing device. The virtual input device can be presented on a display device, such as a computer monitor or a liquid crystal display (LCD) screen. Further, the virtual input device can be presented in a window associated with a computer program, such as an electronic mail application or a search engine. Alternatively, a virtual input device can be displayed through projection onto a surface, such as a desk or a wall.
One or more controls, including virtual keys, virtual buttons, and virtual switches, can be included in the virtual input device. Further, the one or more controls can be arranged to represent a physical input device, such as a keyboard, keypad, or instrument panel. A user can actuate a control included in the virtual input device by manipulating a physical input device coupled to the computing device on which the virtual input device is presented. For example, the Windows XP On-Screen Keyboard by Microsoft Corp. of Redmond, Wash. is a virtual keyboard that can be controlled using one or more physical input devices, including a mouse and a keyboard. Touch using a finger or a pointing device, such as a stylus, also can be used to actuate the one or more controls included in the virtual input device.
Actuating a control associated with a virtual input device causes an action corresponding to the control to be performed, such as entering an item of data or executing a command. The virtual input device can be configured to receive and interpret simple input indicated by actuating a single control. For example, a virtual keyboard can be configured such that actuating the “n” key associated with the virtual keyboard causes the letter “n” to be entered into a corresponding location, such as a text field. The virtual input device also can be configured to receive and interpret complex input indicated by actuating a combination of two or more controls. For example, a “shift” key associated with the virtual keyboard can be actuated before the “n” key is actuated to cause a capital letter “N” to be entered as input.
Additionally, the layout of the one or more controls included in a virtual input device can be customized based on a variety of factors, including the computing device hosting the virtual input device, the application for which the virtual input device is being used, and user preference. For example, the virtual input device can be sized in accordance with an available display area of the computer device on which it is hosted. One or more controls also can be added to or eliminated from a virtual input device. Further, the layout of a virtual input device can be customized. For example, the layout of the controls included in a virtual input device can be selected from a plurality of existing layouts, such as the QWERTY or the Dvorak layout.